// 对热门帖子下的评论用户进行私信

var blackList = require("../blackList.js");

launch("com.xingin.xhs");
sleep(3000);

var 私信数组 = [
  `    ①自习室水电网全免
  ②宿舍区水和网全免
  ③自营食堂，一天33元
  ④吃、住、学一站式备考基地
  ⑤单人间/双人间/三人间/四人间
  ⑥寄宿备考+择校择专+督学+模考+答疑
  ⑦提供健身、游泳、意外保险、床上六件套`,
];
var sendedUsers = [];
var result = files.read("./sendedUsers.txt");
if (result) {
  sendedUsers = JSON.parse(result);
}

function initSearch() {
  var backReturned = id("com.xingin.xhs:id/fcn")
    .desc("返回")
    .className("android.widget.ImageView")
    .checked(false)
    .findOne(500);
  if (backReturned) {
    toastLog("已打开搜索");
  } else {
    // 打开搜索
    var searchReturned = id("com.xingin.xhs:id/hpu")
      .desc("搜索")
      .className("android.widget.Button")
      .checked(false)
      .findOne(500);
    searchReturned.click();
    sleep(500);

    // 输入内容
    var keyword = "寄宿备考";
    setText(keyword);
    sleep(1500);
    // 点击搜索按钮
    var returned = text("搜索").className("android.widget.Button").findOne(500);
    returned.click();
  }
}
// initSearch();

var isDetailPage = false;
function checkPage() {
  isDetailPage = desc("分享").exists();

  if (isDetailPage) {
    detailFn();
  } else {
    listFn();
  }
}

checkPage();

// 热门
function listFn() {
  var swipeIndex = 0;
  while (true) {
    var returnedList = className("android.widget.FrameLayout")
      .clickable(true)
      .longClickable(true)
      .find();

    if (!returnedList.empty()) {
      // 列表
      var filterList = returnedList
        .filter((item) => {
          var noTitleErr = true;
          var noAuthorErr = true;

          // 标题
          try {
            item.child(0).child(1).text();
          } catch (error) {
            noTitleErr = false;
          }
          // 作者
          try {
            item.child(0).child(2).child(1).child(0).text();
          } catch (error) {
            noAuthorErr = false;
          }
          // console.log("noTitleErr: " + noTitleErr);
          // console.log("noAuthorErr: " + noAuthorErr);

          return noTitleErr && noAuthorErr;
        })
        .map((item) => {
          var title = item.child(0).child(1).text();
          var author = item.child(0).child(2).child(1).child(0).text();
          var comment = item.child(0).child(2).child(2).child(1).text();
          return {
            title: title,
            author: author,
            comment: comment,
            it: item,
          };
        });
      // 评论数大于5
      // .filter((item) => item.comment > 5)
      // 非自己
      // .filter((item) => {
      //   return !userBlackList.some((keyword) =>
      //     item.author.includes(keyword)
      //   );
      // });

      // 循环执行
      filterList.forEach(function (item, index) {
        console.log("进入帖子详情");
        console.log();

        item.it.click();

        detailFn();

        back();

        sleep(1000);
      });
    }

    if (swipeIndex === 5) {
      console.log("滑动次数超过5次，开始向下滑动");

      for (var i = 0; i <= swipeIndex * 2; i++) {
        swipeAction_Reverse();
        sleep(500);
      }
      swipeIndex = 0;
    } else {
      swipeAction();
      swipeIndex++;
    }
  }
}

function detailFn() {
  sleep(2000);
  swipeAction();
  var returnedList = className("android.widget.LinearLayout").find();

  let filterList = [];
  returnedList.forEach(function (item, index) {
    var noContentErr = true;
    var noAuthorErr = true;
    var content = "";
    var author = "";

    try {
      content = item.child(0).child(1).child(1).text();
      // console.log(content);
    } catch (error) {
      noContentErr = false;
    }

    try {
      author = item.child(0).child(1).child(0).child(0).text();
      // console.log(author);
    } catch (error) {
      noAuthorErr = false;
    }

    if (noContentErr && noAuthorErr && content && author) {
      filterList.push({
        author: author,
        content: content,
        it: item,
      });
    }
  });

  if (filterList.length === 0) {
    console.log("没有找到评论，可能是帖子没有评论");
    return;
  }

  var filterList2 = filterList
    .filter((item) => {
      return !blackList.some((keyword) => item.author.includes(keyword));
    })
    .filter((item) => {
      return !sendedUsers.includes(item.author);
    });

  filterList2.forEach(function (item, index) {
    sleep(1000);

    console.log("作者：" + item.author);
    // var isInBlack = blackList.some((keyword) => item.author.includes(keyword));

    // if (isInBlack) {
    //   console.log("在黑名单中，跳过");
    //   console.log();
    //   return;
    // }
    // if (sendedUsers.includes(item.author)) {
    //   console.log("已发送过私信，跳过");
    //   console.log();
    //   return;
    // }

    item.it.child(0).child(0).click();

    DM_action_auther(私信数组);

    // sendedUsers.push(item.author);
    // files.write("./sendedUsers.txt", JSON.stringify(sendedUsers), "utf-8");

    sleep(1000);
    back();
    sleep(Math.random(2000, 3000));

    console.log("");
  });

  var isEnd = className("android.widget.TextView")
    .text("- 到底了 -")
    .findOne(500);

  if (!isEnd) {
    console.log("-------评论翻页-------");
    detailFn();
  } else {
    console.log("done-已全部私信完成");

    // 在详情断开的 重新执行列表方法
    if (isDetailPage) {
      isDetailPage = false;
      back();
      sleep(1000);
      listFn();
    }
  }
}

// 私信
function DM_action_auther(私信数组) {
  sleep(2000);
  if (
    textContains("小红书号")
      .className("android.widget.TextView")
      .clickable(true)
      .visibleToUser(true)
      .exists()
  ) {
    if (
      desc("发消息")
        .className("android.widget.ImageView")
        .clickable(true)
        .exists()
    ) {
      var returned = desc("发消息")
        .className("android.widget.ImageView")
        .clickable(true)
        .findOne(500);
      returned.click();
      sleep(2000);
      var randomIndex = Math.floor(Math.random() * 私信数组.length); // 生成一个随机索引
      var randomText = 私信数组[randomIndex];
      setText(randomText);
      sleep(2000);
      var send = text("发送")
        .className("android.widget.TextView")
        .find()
        .filter(
          (item) =>
            item && item.parent().className() == "android.widget.RelativeLayout"
        )[0];
      sleep(1000);
      // send.click();
    }

    sleep(2000);
    back();
  }
}

// 向左滑动操作
function swipeAction_RTL(share_button) {
  var X1 = device.width * 0.8; // 起始点X坐标，屏幕宽度的一半
  var Y1 = share_button.bounds().centerY();

  var X2 = device.width * 0.2; // 结束点X坐标，向左滑动300像素
  var Y2 = Y1 + random(-5, +5); // 结束点Y坐标保持不变
  var duration1 = random(0.4, 0.6) * 1000; // 滑动持续时间，单位为毫秒

  // 执行滑动操作
  swipe(X1, Y1, X2, Y2, duration1);
  sleep(random(1500, 2500));
}

// 向上滑动操作
function swipeAction() {
  var X1 = device.width / 2; // 起始点X坐标，屏幕宽度的一半
  var Y1 = device.height / 1.5 + random(-5, 5); // 起始点Y坐标，屏幕高度的一半
  var X2 = X1; // 结束点X坐标，向左滑动300像素
  var Y2 = random(5, 5); // 结束点Y坐标保持不变
  var duration1 = random(0.5, 0.8) * 1000; // 滑动持续时间，单位为毫秒

  // 执行滑动操作
  swipe(X1, Y1, X2, Y2, duration1);
  sleep(1000, 2000);
}

function swipeAction_Reverse() {
  var X1 = device.width / 2 + random(-2, 2); // 起始点X坐标，屏幕宽度的一半
  var Y1 = device.height / 2 + random(-10, 10); // 起始点Y坐标，屏幕高度的一半
  var X2 = X1 + random(-5, +5); // 结束点X坐标，向左滑动300像素
  var Y2 = device.height - random(50, 100); // 结束点Y坐标保持不变
  var duration1 = random(0.5, 0.8) * 1000; // 滑动持续时间，单位为毫秒

  // 执行滑动操作
  swipe(X1, Y1, X2, Y2, duration1);
  sleep(3000);
}
